home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Design
/
WB Collection.iso
/
workbench werkzeuge
/
memory & system tools
/
tinymeter
/
source
/
tinymeter_main
/
display.c
next >
Wrap
C/C++ Source or Header
|
1996-04-07
|
8KB
|
230 lines
#include <exec/types.h>
#include <exec/memory.h>
#include <dos/dos.h>
#include <dos/dosextens.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <intuition/intuitionbase.h>
#include <intuition/classusr.h>
#include <intuition/gadgetclass.h>
#include <intuition/cghooks.h>
#include <intuition/icclass.h>
#include <intuition/classes.h>
#include <intuition/sghooks.h>
#include <intuition/screens.h>
#include <datatypes/datatypesclass.h>
#include <datatypes/datatypes.h>
#include <datatypes/pictureclass.h>
#include <libraries/SysInfo.h>
#include <graphics/gfxbase.h>
#include <graphics/text.h>
#include <graphics/gfxmacros.h>
#include <utility/tagitem.h>
#include <utility/hooks.h>
#include <string.h>
#include <clib/macros.h>
#include "gaugeclass.h"
#include "tinymeter.h"
extern struct Library *RetinaBase;
/* the only two globals */
extern ULONG maximum,
idle;
drawBackground(struct tm_sys_set *set,struct tm_data *data)
{
struct RastPort *rp=data->win->RPort;
UWORD x,y;
x=data->win->Width-1;
y=data->win->Height-1;
if(data->bg_bm)
{
BltBitMapRastPort(data->bg_bm,0,0,rp,0,0,x+1,y+1,0xc0);
}
else
{
SetAPen(rp,data->bg_color);
RectFill(rp,0,0,data->win->Width-1,data->win->Height-1);
}
SetAPen(rp,data->bright_color);
switch (set->bd_type)
{
case bd_simple:
RectFill(rp,0,0,x,0);
RectFill(rp,0,0,0,y);
RectFill(rp,x,0,x,y);
RectFill(rp,0,y,x,y);
break;
case bd_standard:
RectFill(rp,0,0,x,0);
RectFill(rp,0,0,0,y);
SetAPen(rp,data->dark_color);
RectFill(rp,x,1,x,y);
RectFill(rp,1,y,x,y);
break;
case bd_double:
SetAPen(rp,data->dark_color);
RectFill(rp,0,0,x,0);
RectFill(rp,0,0,0,y);
RectFill(rp,1,y-1,x-1,y-1);
RectFill(rp,x-1,2,x-1,y-1);
SetAPen(rp,data->bright_color);
RectFill(rp,x,1,x,y);
RectFill(rp,1,y,x,y);
RectFill(rp,1,1,x-1,1);
RectFill(rp,1,1,1,y-1);
break;
}
}
allocGadgets(struct tm_sys_set *set, struct tm_data *data, Class *gclass)
{
struct tm_gau_set *many;
ULONG i,max,cur,y_pos,j,tmp;
for(i=0,many=data->list;i<data->num_of_gaug;i++)
{
switch (many->type)
{
case typ_all:
max=AvailMem(MEMF_TOTAL);
cur=AvailMem(0L);
break;
case typ_chip:
max=AvailMem(MEMF_CHIP|MEMF_TOTAL);
cur=AvailMem(MEMF_CHIP);
break;
case typ_fast:
max=AvailMem(MEMF_FAST|MEMF_TOTAL);
cur=AvailMem(MEMF_FAST);
break;
case typ_largest_total:
max=AvailMem(MEMF_TOTAL);
cur=AvailMem(MEMF_LARGEST);
break;
case typ_largest_chip:
max=AvailMem(MEMF_TOTAL|MEMF_CHIP);
cur=AvailMem(MEMF_LARGEST|MEMF_CHIP);
break;
case typ_largest_fast:
max=AvailMem(MEMF_TOTAL|MEMF_FAST);
cur=AvailMem(MEMF_LARGEST|MEMF_FAST);
break;
case typ_largest_retina:
max=Retina_AvailMem(MEMF_TOTAL);
cur=Retina_AvailMem(MEMF_LARGEST);
break;
case typ_volume:
getVolsize(set,data,&many->expansion[0]);
max=data->volmax;
cur=data->volcur;
break;
case typ_idle:
switch (data->executive)
{
case idle_none:
max=1024L;
cur=1024L;
SPrintf(&many->format[0],"n.a.");
break;
case idle_executive:
GetCpuUsage(data->si,&data->cpu);
max=(data->cpu.used_cputime_lastsec_hz)<<8;
cur=(data->cpu.used_cputime_lastsec_hz-data->cpu.used_cputime_lastsec)<<8;
break;
case idle_own:
max=maximum;
cur=idle;
break;
}
break;
case typ_retina:
if(RetinaBase)
{
max=Retina_AvailMem(MEMF_TOTAL);
cur=Retina_AvailMem(0L);
}
else
{
max=1024L;
cur=1024L;
SPrintf(&many->format[0],"n.a.");
}
break;
case typ_clock_:
many->gauge_type=typ_clock;
break;
case typ_image:
break;
case typ_none:
data->gdg[i]=0L;
goto typ_none_1;
break;
}
tmp=i/set->colums;
y_pos= set->win_border_y+(tmp*set->win_space_y)+((data->gauge_y_size[tmp]-((data->Font[i]->tf_YSize*(many->size_y+100))/100))>>1);
for(j=0;j<tmp;j++) y_pos+=data->gauge_y_size[j];
data->gdg[i]=(struct Gadget *)NewObject(gclass, NULL,
GA_ID, i,
GA_Top, y_pos,
GA_Left, set->win_border_x+((i)%set->colums)*data->gauge_x_size+((i)%set->colums)*set->win_space_x,
GA_Width, data->gauge_x_size,
GA_Height, (data->Font[i]->tf_YSize*(many->size_y+100))/100,
GAU_Type, many->gauge_type,
GAU_Current, cur,
GAU_Max, max,
GAU_Base, cur,
GAU_Label, many->label,
GAU_TextFormat, many->format,
GAU_TextFont, data->Font[i],
GAU_LabelPos, data->labelpos,
GAU_FmtIndent, many->indent,
GAU_3D, many->sty_3d,
GAU_Border, many->sty_border,
GAU_Background, many->sty_bg,
GAU_ShadowLabel,many->sty_shadow,
GAU_NoGauge, many->sty_nogauge,
GAU_NoFormat, many->sty_noformat,
GAU_NoBase, many->sty_nobase,
GAU_ColLabel, &many->Colors[col_label],
GAU_ColFormat, &many->Colors[col_format],
GAU_ColBase, &many->Colors[col_base],
GAU_ColCurrent, &many->Colors[col_current],
GAU_ColNegative,&many->Colors[col_negative],
GAU_ColBrightEdg,&many->Colors[col_bright],
GAU_ColDarkEdg, &many->Colors[col_dark],
GAU_ColBackground,&many->Colors[col_bg],
TAG_DONE);
if(!data->gdg[i]) show("Gadget creation failed!");
else
{
SetGadgetAttrs(data->gdg[i],data->win,NULL,TAG_DONE);
RefreshGList (data->gdg[i],data->win,NULL,1);
}
typ_none_1:
many=many->next;
}
}
removeGadgets(struct tm_sys_set *set, struct tm_data *data)
{
int i;
for(i=0;i<data->num_of_gaug;i++)
if(data->gdg[i])
{
DisposeObject(data->gdg[i]);
data->gdg[i]=0L;
}
}